package com.yxhl.zoume.data.http.repository.tripsmgnt;

import com.yxhl.protobuf.BizOrderRequest;
import com.yxhl.protobuf.BizOrderResponse;
import com.yxhl.zoume.data.http.rest.param.specialcar.CancelOrderParam;
import com.yxhl.zoume.data.http.rest.param.tripsmgnt.BusRefundParam;
import com.yxhl.zoume.data.http.rest.param.tripsmgnt.CommentDriverParam;
import com.yxhl.zoume.data.http.rest.param.tripsmgnt.RefundTripParam;
import com.yxhl.zoume.data.http.rest.response.specialcar.CancelOrderResponse;
import com.yxhl.zoume.data.http.rest.response.tirps.CommentDriverResponse;
import com.yxhl.zoume.data.http.rest.response.tirps.RefundProgressResponse;
import com.yxhl.zoume.data.http.rest.response.tirps.RefundResponse;
import com.yxhl.zoume.data.http.rest.response.tirps.RefundTicketResponse;

import retrofit2.http.Body;
import rx.Observable;

/**
 * Created by sugarya on 16/3/27.
 */
public interface TripsRepository {

    /**
     * 查询当前行程
     *
     * @param param
     * @return
     */
    Observable<BizOrderResponse> getCurrentTripOrders(@Body BizOrderRequest param);

    /**
     * 查询行程
     *
     * @param param
     * @return
     */
    Observable<BizOrderResponse> getHistoryTripOrders(@Body BizOrderRequest param);

    /**
     * 点评司机
     *
     * @param commentDriverParam
     * @return
     */
    Observable<CommentDriverResponse> commentOnTripDriver(@Body CommentDriverParam commentDriverParam);

    /**
     * 退票
     *
     * @param refundTripParam
     * @return
     */
    Observable<RefundResponse> refundTicket(@Body RefundTripParam refundTripParam);

    /**
     * 取消订单
     *
     * @param param
     * @return
     */
    Observable<CancelOrderResponse> cancelOrder(@Body CancelOrderParam param);

    /**
     * 获取行程订单详情
     *
     * @param param
     * @return
     */
    Observable<BizOrderResponse> getDetailTripOrder(@Body BizOrderRequest param);

    /**
     * 获取定制巴士车票列表
     *
     * @param param
     * @return
     */
    Observable<BizOrderResponse> getZouMeBusTicketList(@Body BizOrderRequest param);

    /**
     * bus 退款处理进度
     * @param param
     * @return
     */
    Observable<RefundProgressResponse> queryRefundProgress(@Body BusRefundParam param);

    /**
     * 提交bus退票
     * @param param
     * @return
     */
    Observable<RefundTicketResponse> applyBusRefundTicket(@Body BusRefundParam param);

    /**
     * 确认bus退票
     * @param param
     * @return
     */
    Observable<RefundTicketResponse> confirmBusRefundTicket(@Body BusRefundParam param);
}
